package fileDemo.imageDemo;

/**
 * @author Ajie
 * @date 2020-03-24
 * @function
 */

import fileDemo.mfile.FileUtils;
import org.junit.Test;
import password.MD5Utils;

import java.io.*;

public class Base64Util_Test {
    private static final String currentPath = "./src/fileDemo/imageDemo/";
    public static void main(String[] args) {

        String originImg = currentPath + "small.jpeg";
        String descImg = currentPath + "smallDecodeStr.jpeg";


        //调用把图片转换为base64 数据方法	参数是需要转base64图片的路径
        String strImg = Base64Util.encodeImageToStr(originImg);
        String oriMd5 = MD5Utils.md5File(originImg);

        //输出base64 数据, 自定义添加 前缀。
//        System.out.println("data:image/png;base64,"+strImg);
        //调用把base64 数据转换为图片方法  第一个参数是字符串数据，第二个是转为图片存放的路径
        Base64Util.decodeImageToImage(strImg, descImg);
        String desMd5 = MD5Utils.md5File(descImg);
        System.out.println("Base64Util_Test:main:origin:"+oriMd5);
        System.out.println("Base64Util_Test:main:desMd5:"+desMd5);
        System.out.println("Base64Util_Test:main: md5 compare:"+(oriMd5.equals(desMd5)));

    }


    //测试 img -->base64 -->string-->decode-->img 不考虑平台差异化。转base64的格式问题 同时使用android 默认的 default 编码。
    //    idea 环境 与 mac md5sum terminal结果一致。 2023-03-01 10:18:48
    @Test
    public void testBase64EncodeFileDecodeFile() {
      System.out.println("testBase6:");
        String ori = "/Users/macpro/Pictures/1500人照片/干扰";
        for (int i = 1; i < 1000; i++) {
            String oriTest = ori + String.valueOf(i) + ".jpg";
            String oriDest = ori + String.valueOf(i) + "_test.jpg";
            String oriMd5T = MD5Utils.md5File(oriTest);

            //输出base64 数据, 自定义添加 前缀。
//        System.out.println("data:image/png;base64,"+strImg);
            //调用把base64 数据转换为图片方法  第一个参数是字符串数据，第二个是转为图片存放的路径
            Base64Util.decodeImageToImage(Base64Util.encodeImageToStr(oriTest), oriDest);
            String desMd5T = MD5Utils.md5File(oriDest);
            if(!oriMd5T.equals(desMd5T)){
                System.err.println("Base64Util_Test:testBase64EncodeFileDecodeFile:not same...........😄😄"+i);
            }else {
                System.out.println("Base64Util_Test:main: md5 compare:"+i);
            }
        }
    }

    @Test
    public void testStr2JpegSimple(){
        String strImg = FileUtils.readFile2String(new File(currentPath+"base64small.txt").getAbsolutePath());
        System.out.println(strImg);
        Base64Util.decodeImageToImage(strImg, currentPath+"small.jpeg");
    }

    @Test
    public void testStr2JpegBig(){
        String strImg = FileUtils.readFile2String(new File(currentPath+"base64ImgStr.txt").getAbsolutePath());
        System.out.println(strImg);
        Base64Util.decodeImageToImage(strImg, currentPath+"img_StrToImg.jpeg");
    }








}

